/*
 * GameLog.h
 *
 *  Created on: 2013. 10. 29.
 *      Author: jjaehuny
 */

#ifndef PROJECTZ_GAMELOG_H_
#define PROJECTZ_GAMELOG_H_

#include <Network/Packet.h>

namespace ProjectZ {
class User;
} /*ProjectZ*/

namespace ProjectZ { namespace NLogic {
class Party;
class Item;
} /*NLogic*/ } /*ProjectZ*/

namespace ProjectZ { namespace NGameLog {

void WriteMongoDB(User * pUser);
void WriteLogDB(User * pUser);

void Login(User * pUser);
void Logout(User * pUser);

void CU();

void StartSingleDungeon(User * pUser);
void EndDungeon(User * pUser);

void StartPartyDungeon(NLogic::Party * pParty);
void EndPartyDungeon(NLogic::Party * pParty);

void StartPVP(NLogic::Party * pParty);
void EndPVP(NLogic::Party * pParty); // 승리 / 패배 기록

void StartPK(NLogic::Party * pParty);
void EndPK(NLogic::Party * pParty); // 순위 정보 기록

void DungeonReward(User * pUser); // 일반 카드, 젠 카드

void Gachya(User * pUser); // 우정상자 뽑기 유,무료 / 골드/아이템 등급/제련단계(?) p85

void GachyaFairy(User * pUser); // 페어리 레빌, 등급, 속성, 전투 타입 ...

void DailyReward(User * pUser); // 전투팻 레벨, 등급, 속성, 전투 타입 ... 91 메세지함 수락 발송 >????

void FriendAction(User * pUser); // 버프, 포인트, 게임내 친구요청, pvp 랭크 업 자랑, 10가 제련 자랑 ... 93

void FriendCount(User * pUser); // 친구 숫자... 94

void FriendInvite(User * pUser);
// 번개 이벤트 >>> 95 ?????

void Trade(User * pUser); // 등록, 판매, 평균 구입률(?), 가격, 수수료..


// 아이템 어디로 ??????????

void Data_Check_Validate(User * pUser, ::Network::Packet * pSyn); // p 10 해킹유저리스트

void LaunchingEvent(User * pUser, int battleType);

void Fail_ValidateData(User * pUser, uint32_t u32sp, uint32_t u32attack, uint32_t u32defence, uint32_t u32str, uint32_t u32dex,
		uint32_t u32con, uint32_t u32int, uint32_t u32avoid_rate, uint32_t u32critical_rate, uint32_t u32critical_damage);

void LogTradeBuyInfo(User * pUser, uint32_t sellUserSeq, uint32_t itemPrice, uint32_t itemClassType, uint32_t itemSheetType,
		uint64_t tradeSeq, uint64_t itemRegDate, uint32_t itemQuality, const char * itemName);

void LogTradeRegInfo(User * pUser, uint32_t itemPrice, uint32_t itemClassType,
		uint32_t itemSheetType, uint64_t tradeSeq, uint64_t itemRegDate, uint32_t itemQuality, const char * itemName);


void LogGoldInfo(User * pUser, int kind, int changeGold);

void LogItemInfo(User * pUser, int kind, int result, int user_goods, NLogic::Item * pItem);

void LogConnectionInfo(User * pUser, int logoutType = 0);


} /*NGameLog*/ } /*ProjectZ*/

#endif /* PROJECTZ_GAMELOG_H_ */
